package com.xiaoshuidi.cloud.module.rooms.controller.admin.apartment.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.util.Date;

/**
* 公寓 Base VO，提供给添加、修改、详细的子 VO 使用
* 如果子 VO 存在差异的字段，请不要添加到这里，影响 Swagger 文档生成
*/
@Data
public class ApartmentBaseVO {

    @Schema(description = "创建时间")
    private Date createdAt;

    @Schema(description = "修改时间")
    private Date updatedAt;

    @Schema(description = "删除时间")
    private Date deletedAt;

    @Schema(description = "创建人", required = true)
    @NotNull(message = "创建人不能为空")
    private Integer createdBy;

    @Schema(description = "修改人", required = true)
    @NotNull(message = "修改人不能为空")
    private Integer updatedBy;

    @Schema(description = "删除人", required = true)
    @NotNull(message = "删除人不能为空")
    private Integer deletedBy;

    @Schema(description = "版本号", required = true)
    @NotNull(message = "版本号不能为空")
    private Integer version;

    @Schema(description = "是否删除", required = true)
    @NotNull(message = "是否删除不能为空")
    private Boolean isDelete;

    @Schema(description = "名称", required = true)
    @NotNull(message = "名称不能为空")
    private String name;

    @Schema(description = "公寓所在省份")
    private String province;

    @Schema(description = "城市", required = true)
    @NotNull(message = "城市不能为空")
    private String city;

    @Schema(description = "区域", required = true)
    @NotNull(message = "区域不能为空")
    private String district;

    @Schema(description = "商圈")
    private String block;

    @Schema(description = "街道", required = true)
    @NotNull(message = "街道不能为空")
    private String address;

    @Schema(description = "是否是新增加的房源", required = true)
    @NotNull(message = "是否是新增加的房源不能为空")
    private Boolean isNew;

    @Schema(description = "是否在装修", required = true)
    @NotNull(message = "是否在装修不能为空")
    private Boolean isDecorating;

    @Schema(description = "装修开始时间")
    private Date decoratingStartAt;

    @Schema(description = "装修结束时间")
    private Date decoratingEndAt;

    @Schema(description = "楼层数", required = true)
    @NotNull(message = "楼层数不能为空")
    private Short floorNum;

    @Schema(description = "每层房间数", required = true)
    @NotNull(message = "每层房间数不能为空")
    private Short floorRoomNum;

    @Schema(description = "总房间数", required = true)
    @NotNull(message = "总房间数不能为空")
    private Short roomNum;

    @Schema(description = "分配操作权限", required = true)
    @NotNull(message = "分配操作权限不能为空")
    private Integer operatorId;

    @Schema(description = "小区", required = true)
    @NotNull(message = "小区不能为空")
    private String area;

    @Schema(description = "备注")
    private String remark;

    @Schema(description = "纬度值", required = true)
    @NotNull(message = "纬度值不能为空")
    private String latitude;

    @Schema(description = "经度值", required = true)
    @NotNull(message = "经度值不能为空")
    private String longitude;

    @Schema(description = "房源类型")
    private Short sourceType;

    @Schema(description = "栋", required = true)
    @NotNull(message = "栋不能为空")
    private String buildingNo;

    @Schema(description = "单元", required = true)
    @NotNull(message = "单元不能为空")
    private String unitNo;

    @Schema(description = "楼", required = true)
    @NotNull(message = "楼不能为空")
    private String floorNo;

    @Schema(description = "门牌号", required = true)
    @NotNull(message = "门牌号不能为空")
    private String houseNo;

    @Schema(description = "是否整租", required = true)
    @NotNull(message = "是否整租不能为空")
    private Boolean isWhole;

    @Schema(description = "集中式?", required = true)
    @NotNull(message = "集中式?不能为空")
    private Boolean isConcentrated;

    @Schema(description = "房源类型名称")
    private String typeName;

    @Schema(description = "迁移生成:老分散式id")
    private Integer caspainId;

    @Schema(description = "分账账户id")
    private Integer accountId;

    @Schema(description = "分账模板id")
    private String templateNo;

    @Schema(description = "网签备案项目ID")
    private String pid;

    @Schema(description = "公寓创建人ID")
    private Integer founder;

    @Schema(description = "电子发票配置ID", required = true)
    @NotNull(message = "电子发票配置ID不能为空")
    private Integer electronicInvoice;

    @Schema(description = "多门店签约配置ID")
    private Integer authenticationId;

    @Schema(description = "金蝶配置ID")
    private Integer jindieConfigId;

    @Schema(description = "是否被选中关联审批流")
    private Boolean isSelectedApproval;

    @Schema(description = "分项目审批流的id")
    private Integer approvalFlowId;

}
